package ar.edu.utn.frsf.tpae.a2012.g05.dao;

import java.util.List;

import ar.edu.utn.frsf.tpae.a2012.g05.entity.Movimiento;
import ar.edu.utn.frsf.tpae.a2012.g05.exception.PersistenciaException;

public interface MovimientoDao {

	/**
	 * Guarda o actualiza un movimiento dependiendo si ya se enceuntra o no persistido.
	 * 
	 * @param un movimiento a guardar o actualizar
	 * 
	 */
	public void saveOrUpdate(Movimiento movimiento);
	
	/**
	 * Elimina un movimiento.
	 * 
	 * @param movimiento un movimiento a eliminar
	 * @throws PersistenciaException si el movimiento no existe
	 */
	public void delete(Movimiento movimiento) throws PersistenciaException;
	
	/**
	 * Busca un movimiento por su identificador.
	 * 
	 * @param idMovimiento
	 * @return el movimiento encontrado o null si no existe
	 */
	public Movimiento findById(Integer idMovimiento);
	
	/**
	 * Lista todos los movimientos existentes.
	 * 
	 * @return lista de todos los movimientos
	 */
	public List<Movimiento> findAll();
	
	/**
	 * Lista todos los movimientos asociados a una cuenta
	 * 
	 * @param idCuenta el identificador de la cuenta
	 * @return lista de movimientos asociados a la cuenta
	 */
	public List<Movimiento> findByIdCuenta(Integer idCuenta);
	
}
